/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.Beasiswa;
import Entity.Mahasiswa;
import Entity.PengajuanBeasiswa;
import Entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import library.Koneksi;

/**
 *
 * @author user
 */
public class DaftarPendaftarBeasiswa {

    PengajuanBeasiswa PengajuanBeasiswa;

    //method untuk menambah daftar pengajuan beasiswa
    public boolean tambahPengajuanBeasiswa(PengajuanBeasiswa PengajuanBeasiswa) {
        boolean hasil = false;
        this.PengajuanBeasiswa = PengajuanBeasiswa;
        Koneksi dbConn = new Koneksi();
        String sql = "insert into pengajuan_bea(ID_BEA, ID_USER, NAMA_AYAH, PEKERJAAN_AYAH, "
                + "NAMA_IBU, PEKERJAAN_IBU, GAJI_ORANG_TUA, REK_LISTRIK, REK_PDAM, "
                + "ALASAN_PENGAJUAN, WAKTU_PENGAJUAN, STATUS_PENGAJUAN, "
                + "FILE_KTP, FILE_REK_LISTRIK, FILE_REK_PDAM, FILE_TRASNSKRIP_IPK)"
                + " value(" + this.PengajuanBeasiswa.getBeasiswa().getIdBeasiswa() + ","
                + "'" + this.PengajuanBeasiswa.getMahasiswa().getUser().getIdUser() + "',"
                + "'" + this.PengajuanBeasiswa.getNamaAyah() + "',"
                + "'" + this.PengajuanBeasiswa.getPekerjaanAyah() + "',"
                + "'" + this.PengajuanBeasiswa.getNamaIbu() + "',"
                + "'" + this.PengajuanBeasiswa.getPekerjaanIbu() + "',"
                + "'" + this.PengajuanBeasiswa.getGajiOrtu() + "',"
                + "'" + this.PengajuanBeasiswa.getRekListrik() + "',"
                + "'" + this.PengajuanBeasiswa.getRekPdam() + "',"
                + "'" + this.PengajuanBeasiswa.getAlasanPengajuan() + "',"
                + "'" + this.PengajuanBeasiswa.getWaktuPengajuan() + "',"
                + "'" + this.PengajuanBeasiswa.getStatusPengajuan() + "',"
                + "'" + this.PengajuanBeasiswa.getUploadKtp() + "',"
                + "'" + this.PengajuanBeasiswa.getUploadListrik() + "',"
                + "'" + this.PengajuanBeasiswa.getUploadPdam() + "',"
                + "'" + this.PengajuanBeasiswa.getUploadTranskrip() + "'"
                + ")";
        System.out.println("sql : " + sql);
        PreparedStatement st = null;
        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if (rs > 0) {
                hasil = true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("error : " + ex.getErrorCode());
            System.out.println("error : " + ex.getMessage());
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;
    }

    //method untuk mengambil data pendaftar beasiswa
    public List<PengajuanBeasiswa> ambilDaftarPendaftarBeasiswa() {
        List<PengajuanBeasiswa> daftarPendaftarBeasiswa = new ArrayList<PengajuanBeasiswa>();
        Koneksi dbConn = new Koneksi();
        String sql = "SELECT * FROM pengajuan_bea, mahasiswa, nilai, user, beasiswa WHERE pengajuan_bea.ID_BEA = beasiswa .ID_BEA and pengajuan_bea.ID_USER = mahasiswa.ID_USER and nilai.ID_USER = mahasiswa.ID_USER and user.ID_USER = mahasiswa.ID_USER and mahasiswa.SMT_MHS = nilai.SMT";

        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while (rs.next()) {
                System.out.println("gjbjbjbjbjb");
                this.PengajuanBeasiswa = new PengajuanBeasiswa();
                PengajuanBeasiswa pengajuanBeasiswa1 = new PengajuanBeasiswa();
                Beasiswa beasiswa = new Beasiswa();
                beasiswa.setNamaBeasiswa(rs.getString("JUDUL_BEA"));
                beasiswa.setIdBeasiswa(rs.getInt("ID_BEA"));

                User user = new User();
                user.setIdUser(rs.getString("ID_USER"));
                user.setNamaUser(rs.getString("NAMA_USER"));

                Mahasiswa mhs = new Mahasiswa();
                mhs.setNilai(rs.getString("IPK"));
                mhs.setSmtMhs(rs.getInt("SMT"));

                pengajuanBeasiswa1.setBeasiswa(beasiswa);
                pengajuanBeasiswa1.setUser(user);
                pengajuanBeasiswa1.setMahasiswa(mhs);

                pengajuanBeasiswa1.setIdPengajuanBeasiswa(rs.getInt("ID_MHS_BEA"));
                pengajuanBeasiswa1.setNamaAyah(rs.getString("NAMA_AYAH"));
                pengajuanBeasiswa1.setPekerjaanAyah(rs.getString("PEKERJAAN_AYAH"));
                pengajuanBeasiswa1.setNamaIbu(rs.getString("NAMA_IBU"));
                pengajuanBeasiswa1.setPekerjaanIbu(rs.getString("PEKERJAAN_IBU"));
                pengajuanBeasiswa1.setGajiOrtu(rs.getString("GAJI_ORANG_TUA"));
                pengajuanBeasiswa1.setRekListrik(rs.getString("REK_LISTRIK"));
                pengajuanBeasiswa1.setAlasanPengajuan(rs.getString("ALASAN_PENGAJUAN"));
                pengajuanBeasiswa1.setWaktuPengajuan(rs.getString("WAKTU_PENGAJUAN"));
                pengajuanBeasiswa1.setStatusPengajuan(rs.getString("STATUS_PENGAJUAN"));
                pengajuanBeasiswa1.setRekPdam(rs.getString("REK_PDAM"));
                daftarPendaftarBeasiswa.add(pengajuanBeasiswa1);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarPendaftarBeasiswa;
    }

    public List<PengajuanBeasiswa> ambilDaftarPendaftaranBeasiswa(String idUser) {
        List<PengajuanBeasiswa> daftarPendaftarBeasiswa = new ArrayList<PengajuanBeasiswa>();
        Koneksi dbConn = new Koneksi();
        String sql = "SELECT * FROM pengajuan_bea, mahasiswa, nilai, user, beasiswa WHERE pengajuan_bea.ID_BEA = beasiswa .ID_BEA and pengajuan_bea.ID_USER = mahasiswa.ID_USER and nilai.ID_USER = mahasiswa.ID_USER and user.ID_USER = mahasiswa.ID_USER and mahasiswa.SMT_MHS = nilai.SMT and user.ID_USER = '" + idUser + "'";

        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while (rs.next()) {
                System.out.println("gjbjbjbjbjb");
                this.PengajuanBeasiswa = new PengajuanBeasiswa();
                PengajuanBeasiswa pengajuanBeasiswa1 = new PengajuanBeasiswa();
                Beasiswa beasiswa = new Beasiswa();
                beasiswa.setNamaBeasiswa(rs.getString("JUDUL_BEA"));

                User user = new User();
                user.setIdUser(rs.getString("ID_USER"));
                user.setNamaUser(rs.getString("NAMA_USER"));

                Mahasiswa mhs = new Mahasiswa();
                mhs.setNilai(rs.getString("IPK"));
                mhs.setSmtMhs(rs.getInt("SMT"));

                pengajuanBeasiswa1.setBeasiswa(beasiswa);
                pengajuanBeasiswa1.setUser(user);
                pengajuanBeasiswa1.setMahasiswa(mhs);

                pengajuanBeasiswa1.setIdPengajuanBeasiswa(rs.getInt("ID_MHS_BEA"));
                pengajuanBeasiswa1.setNamaAyah(rs.getString("NAMA_AYAH"));
                pengajuanBeasiswa1.setPekerjaanAyah(rs.getString("PEKERJAAN_AYAH"));
                pengajuanBeasiswa1.setNamaIbu(rs.getString("NAMA_IBU"));
                pengajuanBeasiswa1.setPekerjaanIbu(rs.getString("PEKERJAAN_IBU"));
                pengajuanBeasiswa1.setGajiOrtu(rs.getString("GAJI_ORANG_TUA"));
                pengajuanBeasiswa1.setRekListrik(rs.getString("REK_LISTRIK"));
                pengajuanBeasiswa1.setAlasanPengajuan(rs.getString("ALASAN_PENGAJUAN"));
                pengajuanBeasiswa1.setWaktuPengajuan(rs.getString("WAKTU_PENGAJUAN"));
                pengajuanBeasiswa1.setStatusPengajuan(rs.getString("STATUS_PENGAJUAN"));
                pengajuanBeasiswa1.setRekPdam(rs.getString("REK_PDAM"));
                daftarPendaftarBeasiswa.add(pengajuanBeasiswa1);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarPendaftarBeasiswa;
    }

    public List<PengajuanBeasiswa> ambilDaftarPenerimaBeasiswa(String idBea) {
        List<PengajuanBeasiswa> daftarPenerimaBeasiswa = new ArrayList<PengajuanBeasiswa>();
        Koneksi dbConn = new Koneksi();
        String sql = "SELECT * FROM beasiswa, pengajuan_bea, user WHERE pengajuan_bea.ID_USER = user.ID_USER and beasiswa.ID_BEA = pengajuan_bea.ID_BEA and STATUS_PENGAJUAN = '1' and pengajuan_bea.ID_BEA=" + idBea;

        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while (rs.next()) {

                User user = new User();
                PengajuanBeasiswa pengajuanBeasiswa = new PengajuanBeasiswa();
                user.setIdUser(rs.getString("ID_USER"));
                user.setNamaUser(rs.getString("NAMA_USER"));
                Beasiswa bea = new Beasiswa();
                bea.setNamaBeasiswa(rs.getString("JUDUL_BEA"));
                pengajuanBeasiswa.setBeasiswa(bea);
                pengajuanBeasiswa.setUser(user);
                daftarPenerimaBeasiswa.add(pengajuanBeasiswa);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarPenerimaBeasiswa;
    }
    
    
//    //method untuk menghapus data beasiswa
//    public boolean hapusBeasiswa(Beasiswa beasiswa){
//
//        boolean hasil = true;
//
//        PreparedStatement st = null;
//        DbKoneksi dbConn = new DbKoneksi();
//
//        String sql = "DELETE FROM beasiswa WHERE ID_BEA = "+beasiswa.getIdBeasiswa();
//
//        Connection conn = Koneksi.getKoneksi();
//        try {
//            st = conn.prepareStatement(sql);
//            int rs = st.executeUpdate(sql);
//            if(rs > 0){
//                hasil = true;
//            } else{
//                hasil = false;
//            }
//        } catch (SQLException ex) {
//            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
//        } finally {
//            dbConn.closeConnection();
//        }
//
//        return hasil;
//
//    }

//    
//method untuk mengambil data beasiswa dengan id tertentu
    public PengajuanBeasiswa ambilDataPengajuanBeasiswa(String idBeasiswa) {

        Koneksi dbConn = new Koneksi();
        PengajuanBeasiswa pengajuanBeasiswa1 = new PengajuanBeasiswa();

        String sql = "SELECT * FROM pengajuan_bea, mahasiswa, nilai, user, beasiswa "
                + "WHERE pengajuan_bea.ID_BEA = beasiswa .ID_BEA and pengajuan_bea.ID_USER = mahasiswa.ID_USER "
                + "and nilai.ID_USER = mahasiswa.ID_USER and user.ID_USER = mahasiswa.ID_USER and mahasiswa.SMT_MHS = nilai.SMT and pengajuan_bea.ID_MHS_BEA =" + idBeasiswa;
        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while (rs.next()) {
                Beasiswa beasiswa = new Beasiswa();
                beasiswa.setNamaBeasiswa(rs.getString("JUDUL_BEA"));
                beasiswa.setIdBeasiswa(rs.getInt("ID_BEA"));

                User user = new User();
                user.setIdUser(rs.getString("ID_USER"));
                user.setNamaUser(rs.getString("NAMA_USER"));

                Mahasiswa mhs = new Mahasiswa();
                mhs.setNilai(rs.getString("IPK"));
                mhs.setSmtMhs(rs.getInt("SMT"));

                pengajuanBeasiswa1.setBeasiswa(beasiswa);
                pengajuanBeasiswa1.setUser(user);
                pengajuanBeasiswa1.setMahasiswa(mhs);

                pengajuanBeasiswa1.setIdPengajuanBeasiswa(rs.getInt("ID_MHS_BEA"));
                pengajuanBeasiswa1.setNamaAyah(rs.getString("NAMA_AYAH"));
                pengajuanBeasiswa1.setPekerjaanAyah(rs.getString("PEKERJAAN_AYAH"));
                pengajuanBeasiswa1.setNamaIbu(rs.getString("NAMA_IBU"));
                pengajuanBeasiswa1.setPekerjaanIbu(rs.getString("PEKERJAAN_IBU"));
                pengajuanBeasiswa1.setGajiOrtu(rs.getString("GAJI_ORANG_TUA"));
                pengajuanBeasiswa1.setRekListrik(rs.getString("REK_LISTRIK"));
                pengajuanBeasiswa1.setRekPdam(rs.getString("REK_PDAM"));
                pengajuanBeasiswa1.setAlasanPengajuan(rs.getString("ALASAN_PENGAJUAN"));
                pengajuanBeasiswa1.setWaktuPengajuan(rs.getString("WAKTU_PENGAJUAN"));
                pengajuanBeasiswa1.setStatusPengajuan(rs.getString("STATUS_PENGAJUAN"));
                pengajuanBeasiswa1.setUploadKtp(rs.getString("FILE_KTP"));
                pengajuanBeasiswa1.setUploadListrik(rs.getString("FILE_REK_LISTRIK"));
                pengajuanBeasiswa1.setUploadPdam(rs.getString("FILE_REK_PDAM"));
                pengajuanBeasiswa1.setUploadTranskrip(rs.getString("FILE_TRASNSKRIP_IPK"));

            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return pengajuanBeasiswa1;

    }

//   //   method untuk mengedit beasiswa
    public boolean editPengajuanBeasiswa(PengajuanBeasiswa pengajuanBeasiswa) {
        boolean hasil = false;
        this.PengajuanBeasiswa = pengajuanBeasiswa;
        Koneksi dbConn = new Koneksi();

        String sql = "update pengajuan_bea SET "
                + "STATUS_PENGAJUAN = '" + this.PengajuanBeasiswa.getStatusPengajuan()
                + "' where ID_MHS_BEA = " + this.PengajuanBeasiswa.getIdPengajuanBeasiswa();

        PreparedStatement st = null;

        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if (rs > 0) {
                hasil = true;
            } else {
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return hasil;
    }

    public List rekapPendaftarBeasiswa() {
        List rekapPendaftarBeasiswa = new ArrayList();
        Koneksi dbConn = new Koneksi();
        String sql = "SELECT beasiswa.JUDUL_BEA, beasiswa.ID_BEA, COUNT(ID_MHS_BEA) AS JUMLAH_DITERIMA FROM pengajuan_bea RIGHT JOIN beasiswa ON pengajuan_bea.ID_BEA = beasiswa.ID_BEA AND STATUS_PENGAJUAN = '1' GROUP BY beasiswa.ID_BEA";

        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while (rs.next()) {
                Map map = new HashMap();
                map.put("idBea", rs.getString("ID_BEA"));
                map.put("namaBea", rs.getString("JUDUL_BEA"));
                map.put("jumlah", rs.getString("JUMLAH_DITERIMA"));
                rekapPendaftarBeasiswa.add(map);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarPendaftarBeasiswa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return rekapPendaftarBeasiswa;
    }
}
